#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

int main()
{
    //二维数组
    int row=3;
    int** pp=(int**)calloc(sizeof(int*),row);
    int len=4;
    for(size_t i=0;i<row;i++)
    {
        pp[i]=(int*)calloc(sizeof(int),len);
    }

    for(int i=0;i<row;i++)
    {
        for(int j=0;j<len;j++)
        {
            pp[i][j]=i*10+j;
            //*(pp[i]+j)=i*10+j;  //等价
            //*(*(pp+i)+j)=i*10+j; //等价
            printf(" %-3d %p\t",pp[i][j],&pp[i][j]);
            //printf("pp[%d][%d]:%-2d %p %-2d\n",i,pp[i],pp+i,*(pp+i));
        }
        printf("\n");  
    }
    //3、释放
    for(size_t i=0;i<row;i++)
    {
        free(pp[i]);
    }
    free(pp);
    //4、置空
    pp=NULL;

	//system("pause");
	return 0;
} 